// *** LICENSE HEADER ***
// Filename: ./logger.h
// This file is part of Nodewarz 0.1
// Nodewarz is a 3d OpenGL strategy game
// Copyright (C) 2007 CZestmyr
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License along
// with this program; if not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
// *** END LICENSE HEADER ***
#ifndef NODEWARS_LOGGER_H
#define NODEWARS_LOGGER_H

#include <fstream>
#include <ctime>
#include "definitions.h"

typedef int logLevel;

enum {
    LL_NOTHING = 0,
    LL_DEBUG = 1,
    LL_INFORMATION = 2,
    LL_WARNING = 4,
    LL_ERROR = 8
};

//Class that creates the program log
class logger {
    public:
        //Create the logger and attach to the specified log file
        logger(const char* newLogFileName);
        ~logger();
        //Log a message at the specified log level
        void log(logLevel messageLevel, const char* message);
        //Change the log level to a new one
        void changeLogLevel(logLevel newLogLevel);
    private:
        //CUrrent log level
        logLevel outputWhat;
        //Attached log file
        std::ofstream logFile;

        //Helper time_t struct
        time_t currentTime;
        //Helper buffer
        char buffer[32];
};

#endif
